﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Consulta;

namespace Dominio
{
    public class CalculoImpuestosPais : ICalculoImpuestoPais
    {
        private string nombrePais;
        private List<Impuestos> listaImpuestos;
        private IConsultas icon;
        
        
        public CalculoImpuestosPais(string nomPais)
        {
            icon = FactoryConsulta.getInstanceConsulta();
            nombrePais = nomPais;
            int idpais=-1;
            listaImpuestos = new List<Impuestos>();
            foreach (string[] p in icon.obtenerPaises(true))
            {
                if (p[1] == nombrePais)
                {
                    idpais = int.Parse(p[0]);
                    break;
                }

            }
            if (idpais >= 0)
            {
                foreach (string[] imp in icon.obtenerImpuestosPais(idpais, true))
                {
                    Impuestos impuesto = new Impuestos(int.Parse(imp[0]),imp[1],idpais,float.Parse(imp[2]),int.Parse(imp[3]),char.Parse(imp[4]));
                    listaImpuestos.Add(impuesto);
                }
            }
        }

        // Devuelve un diccionario de string,float, donde string es el nombre del impuesto y float es
        // el resultado de aplicar el impuesto al subTotal
        // El resultado se devuelve en orden de aplicacion.
        public Dictionary<string, float> calcularImpuestos(double subTotal)            
        {
            Dictionary<string,float> diccAux = new Dictionary<string,float>();
            try
            {
                foreach (Impuestos imp in listaImpuestos)
                {
                    float impAplicado = (float)subTotal * (imp.getValor()/100);
                    diccAux.Add(imp.getNombre() + " (" + imp.getValor().ToString() + "%)", impAplicado);
                }
                return diccAux;
            }catch(Exception ex)
            {
                throw ex;
            }
        }

    
    }
}
